package org.obvial.obvial;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

//Autor: David Puerto

public class GestorRegistro {
	
	private static GestorRegistro miGestorRegistro = new GestorRegistro();
	
	private GestorRegistro(){}
	
	public static GestorRegistro getGestorRegistro(){
		
		return miGestorRegistro;
		
	}
	
	public Boolean existeNombre(String pNombre) throws SQLException{
		//Hacer un SELECT con pNombre. Si no hay resultados, continuamos devolviendo false. Si hay, devolvemos true
		ResultSet rs = GestorBD.getInstance().consulta("select * from usuario where NOMBRE='"+pNombre+"'");
		Boolean result = rs.next();
		GestorBD.getInstance().cerrarConsulta(rs);
		if(result){
			return true;
		}else{
			return false;
		}
	}
	
	public boolean comprobarContrasea(char[] j1,char[] j2) {
		boolean valor = true;
		int puntero = 0;
		if (j1.length != j2.length || j1.length < 6 || j1.length > 20){
			valor = false;
		}else{
			while((valor)&&(puntero < j1.length)){
				if (j1[puntero] != j2[puntero]){
					valor = false;
				}
				puntero++;
			}
		}
		return valor;
	}
	
	public Boolean existeEmail(String pEmail) throws SQLException{
		//Hacer un SELECT con pEmail. Si no hay resultados, continuamos devolviendo false. Si hay, devolvemos true
		ResultSet rs = GestorBD.getInstance().consulta("select * from usuario where EMAIL='"+pEmail+"'");
		Boolean result = rs.next();
		GestorBD.getInstance().cerrarConsulta(rs);
		if(result){
			return true;
		}else{
			return false;
		}
	}
	
	//Metodo para validar correo electronico
    public Boolean isEmail(String correo) {
        Pattern pat = null;
        Matcher mat = null;        
        //pat = Pattern.compile("^([0-9a-zA-Z]([_.w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+([a-zA-Z]{2,9}.)+[a-zA-Z]{2,3})$");
        pat = Pattern.compile("^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\\.[a-zA-Z]{2,4}(\\.[a-zA-Z]{2,4})?$");
        mat = pat.matcher(correo);
        if (mat.find()) {
            return true;
        }else{
            return false;
        }
    }
    
    public Boolean comprobarLongitudNombre(String pNombre){
    	if(pNombre.length() == 0 ||pNombre.length() > 15){
    		return false;
    	}else{
    		return true;
    	}
    }
    
    public Boolean comprobarLongitudEmail(String pEmail){
    	if(pEmail.length() == 0 || pEmail.length() > 50){
    		return false;
    	}else{
    		return true;
    	}
    }
   
    public void insertarUsuario(String pNombre, char[] pContrasea, String pEmail) throws SQLException{
    	String contrasea = String.valueOf(pContrasea);
    	GestorBD.getInstance().insertar("insert into usuario(NOMBRE,PASSWORD,EMAIL) values ('"+pNombre+"','"+contrasea+"','"+pEmail+"')");
    }
	
}
